Unconditionally return the height for the minimum width when doing get_desired_height()
authorTristan Van Berkom <tristan.van.berkom@gmail.com>
Tue, 20 Apr 2010 00:43:19 +0000 (20:43 -0400)
committerTristan Van Berkom <tristan.van.berkom@gmail.com>
Tue, 20 Apr 2010 00:43:19 +0000 (20:43 -0400)
This is the correct support for the opposing orientation for widgets
that support height-for-width, in an interface that was realized as
width-for-height, a height-for-width supporting widget should return
the minimum height for the minimum width when the initial
get_desired_height() is run.

gtk/gtklabel.c

index 592821b3bfa1bd43cbb105ddc67e1806dbdd53e6..0e292207b39f6971c6af9243ee0498c0da488e2b 100644 (file)
@@ -3417,15 +3417,15 @@ gtk_label_get_desired_size (GtkExtendedLayout *layout,
     }
   else
     {
-      /* When wrapping, just return a height contextual to the minimum width
-       * (minimum widths can only be specified by explicitly setting width-chars).
-       */
-      if (label->wrap && !label->have_transform)
-       get_size_for_allocation (label, GTK_ORIENTATION_HORIZONTAL, 
-                                (required_rect.width  + label->misc.xpad * 2), minimum_size, natural_size);
+      if (!label->have_transform)
+       {
+         /* Doing a w4h request on a label here, return the required height for the minimum width. */
+         get_size_for_allocation (label, GTK_ORIENTATION_HORIZONTAL, 
+                                  (required_rect.width  + label->misc.xpad * 2), minimum_size, natural_size);
+       }
       else
        {
-         /* If there is no wrapping, the height is either static or rotated and ellipsized */
+         /* Rotated labels already setup the required height here */
          *minimum_size = required_rect.height + label->misc.ypad * 2;
          *natural_size = natural_rect.height + label->misc.ypad * 2;
        }